package com.yxw.live_vod_boot.service;

import com.yxw.live_vod_boot.dto.ClientSendTalkDTO;
import com.yxw.live_vod_boot.dto.CreateSessionTalkDto;
import com.yxw.live_vod_boot.dto.PageSessionTalkDto;
import com.yxw.live_vod_boot.dto.PageTalkRecodesDto;
import com.yxw.live_vod_boot.entity.YxSysShareEntity;
import com.yxw.live_vod_boot.vo.PageSessionTalkVo;
import com.yxw.live_vod_boot.vo.PageTalkRecodesVo;
import com.yxw.yxnet_cd_center.common.dto.PageVO;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author liuxin
 * 2023.12.04
 * 会话管理
 */
public interface SessionTalkService {

    /**
     * 分享会话发送
     * @param shareEntity
     */
    void sendTalkByShare(YxSysShareEntity shareEntity);

    /**
     * 查询会话记录
     * @param dto
     * @return
     */
    PageVO<PageTalkRecodesVo> pageTalkRecordes(PageTalkRecodesDto dto);

    /**
     * 删除会话（用于单方面删除会话）
     * @param recordId
     */
    void deleteTalkRecordeBYId(Long recordId);

    /**
     * 分页查询会话列表
     * @return
     */
    PageVO<PageSessionTalkVo> pageSessionTalkList(PageSessionTalkDto dto);

    /**
     * 删除会话
     * @param talkId
     */
    void deleteSessionTalkById(String talkId);

    /**
     * 消息撤回
     * @param recordId
     */
    void recallMessage(Long recordId);

    /**
     * 发送会话
     * @param dto
     */
    void sendTalk(ClientSendTalkDTO dto, MultipartFile file);

    /**
     * 创建会话
     * @param dto
     */
    String createSessionTalk(CreateSessionTalkDto dto);

    /**
     * 消息从未读变已读
     * @param sessionId
     */
    void updateReadStatus(String sessionId);
}
